//某公司架构以二叉树形式记录，请返回该公司的层级数。 
//
// 
//
// 示例 1： 
//
// 
//
// 
//输入：root = [1, 2, 2, 3, null, null, 5, 4, null, null, 4]
//输出: 4
//解释: 上面示例中的二叉树的最大深度是 4，沿着路径 1 -> 2 -> 3 -> 4 或 1 -> 2 -> 5 -> 4 到达叶节点的最长路径上有 4 
//个节点。
// 
//
// 
//
// 提示： 
//
// 
// 节点总数 <= 10000 
// 
//
// 注意：本题与主站 104 题相同：https://leetcode-cn.com/problems/maximum-depth-of-binary-
//tree/ 
//
// 
//
// Related Topics 树 深度优先搜索 广度优先搜索 二叉树 👍 277 👎 0


package LeetCode.editor.cn;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author ldltd
 * @date 2025-05-17 15:07:55
 * @description LCR 175.计算二叉树的深度
 */
public class ErChaShuDeShenDuLcof{
	 public static void main(String[] args) {
	 	 //测试代码
	 	 ErChaShuDeShenDuLcof fun=new ErChaShuDeShenDuLcof();
	 	 Solution solution = fun.new Solution();

	 }
	 
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)

  //Definition for a binary tree node.
  public class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
         this.right = right;
      }
  }

class Solution {
    public int calculateDepth1(TreeNode root) {
        if(root==null) return 0;
		else {
			int l=calculateDepth(root.left);
			int r=calculateDepth(root.right);
			return Math.max(l,r)+1;
		}
    }
	public int calculateDepth(TreeNode root) {
		if(root==null) return 0;

		Deque<TreeNode> q=new ArrayDeque<>();
		q.offer(root);
		int res=0;
		while (!q.isEmpty()){
			int t=q.size();
			while (t>0){
				TreeNode poll = q.poll();
				if(poll.left!=null){
					q.offer(poll.left);
				}
				if(poll.right!=null){
					q.offer(poll.right);
				}
				t--;
			}
			res++;
		}
		return res;
	}
}
//leetcode submit region end(Prohibit modification and deletion)

}
